package com.Maykk.Demo06;

/**
 * @ClassName: MySubString
 * @Description: TODO
 * @Author: MaykkStar@163.com
 */
public class MySubString {
    public static void main(String[] args) {
        // 匿名内部类
        runMyString(new MyString() {
            @Override
            public String mySubString(String str, Integer start, Integer end) {
                return str.substring(start, end);
            }
        });
        // 完整 Lambda
        runMyString((String str, Integer start, Integer end) -> {
            return str.substring(start, end);
        });
        // 省略 Lambda
        runMyString(((str, start, end) -> str.substring(start,end)));
        // 引用类的实例方法替换Lambda,第一个参数作为方法的调用者，其他的参数作为实参进行传递（隐士）
        runMyString(String::substring);
    }


    public static void runMyString(MyString ms) {
        String res = ms.mySubString("HelloJavaSeLambda!~", 5, 9);
        System.out.println(res);
    }
}
